package com.jt.common.util;


import java.text.DecimalFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

/**
 * 各类流水号生成器
 * @author BennyTian
 * @date 2014/12/20
 */
public class SerialNumberGenerator {

	private static Random random = new Random();
	private static DecimalFormat df = new DecimalFormat("000000");
	private static DecimalFormat df9 = new DecimalFormat("000000000");
	
	public static String getFormatRandomNo(){
		return df.format(random.nextInt(999999)) ;
	}
	
	public static String getFormatRandomNo(Integer id){
		return df9.format(id) ;
	}

	/**
	 * 生成支付流水号
	 * @return
	 */
	public static String generatePayNo(){
		return DateUtil.formatDate(new Date(), "yyyyMMddHHmmss") + getFormatRandomNo();
	}
	
	/**
	 * 生成支付宝批次号：用于 退款 和 提现
	 * <br/>格式为 当前日期(8 位)+流水号(3~24 位),必须为当天日期。
	 * @return
	 */
	public static String generateAlipayRefundBatchNo(){
		return DateUtil.formatDate(new Date(), "yyyyMMdd") + System.currentTimeMillis() + getFormatRandomNo();
	}
	
	/**
	 * 生成充电流水号
	 * @return
	 */
	public static String generateChargeNo(){
		DecimalFormat df = new DecimalFormat("000");
		return "C"+DateUtil.formatDate(new Date(), "yyyyMMddHHmmss") + df.format(random.nextInt(999));
	}
	
	/**
	 * 获取微信支付的随机串
	 * @author BennyTian
	 * @date 2015年5月4日 下午9:27:49
	 * @return
	 */
	public static String generateWeixinPayNonce(){
		return UUID.randomUUID().toString().replaceAll("-", "");
	}
}
